package org.d2_recursion.d2_recursion;

import java.io.File;

public class RecursionText4  {

    /**
     * 文件搜索
     */
    public static void main(String[] args) throws Exception {
       searchFile(new File("D:/"),"QQ9.7.1.28940.exe");
    }
    //写方法
    /**
     * 去目录下搜索某个文件
     * @param dir   //目录
     * @param fileName   要搜索的文件名
     */
    public static void searchFile(File dir,String fileName) throws Exception { //又继续往外抛出 了，，在往上继续抛出
        //1.把非法的情况拦截
        if(dir == null || !dir.exists()|| dir.isFile()){  //当这个dir不是目录是文件时 无法搜索
            return;               //代表无法搜索
        }
        //2.就可以确定dir不是null,存在，一定时目录对象；
        //获取当前目录下的全部一级文件对象
        File[] files = dir.listFiles();

        //3.判断当前目录下是否存在一级文件对象，以及是否可以拿到一级对象
        if(files != null && files.length>0){
            //4.遍历全部一级对象
            for (File f : files) {
                //5.判断文件是否是文件，还是文件夹
                if(f.isFile()){
                    //是文件，判断这个文件名是否是为我们要找的
                    if(f.getName().contains(fileName)){   //包含文件的名字
                        System.out.println("找到了" + f.getAbsolutePath());
                        Runtime runtime = Runtime.getRuntime();  //这个代码会直接打开页面
                        runtime.exec(f.getAbsolutePath());
                    }
                }else {
                    //是文件夹，继续重复这个过程（递归）
                    searchFile(f,fileName);
                }
            }

        }

    }
}
